home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / comm / tcp / dct16_src.lzh / dctelnet-1.6 / connect.c < prev    next >
C/C++ Source or Header  |  2000-09-21  |  4KB  |  170 lines

  1. /* DCTELNET CONNECT GUI */
  2.  
  3. #include <exec/types.h>
  4. #include <intuition/intuition.h>
  5. #include <intuition/gadgetclass.h>
  6. #include <libraries/gadtools.h>
  7. #include <graphics/displayinfo.h>
  8. #include <graphics/gfxbase.h>
  9. #include <proto/exec.h>
  10. #include <proto/dos.h>
  11. #include <proto/intuition.h>
  12. #include <proto/gadtools.h>
  13. #include <string.h>
  14. #include "connect.h"
  15.  
  16. struct Window         *Project8Wnd;
  17. struct Gadget         *Project8GList;
  18. struct Gadget         *Project8Gadgets[5];
  19. #define Project8Width 330
  20. #define Project8Height 105
  21. #define Project8Wdt "Connecting..."
  22. extern UWORD                  FontX, FontY;
  23. extern UWORD                  OffX, OffY;
  24. extern struct TextAttr        Attr;
  25.  
  26. extern char MakeGadgets(struct MyNewGadget ProjectNGad[], struct Gadget *ProjectGadgets[], ULONG ProjectGTags[], struct Gadget *g, UBYTE ProjectGTypes[], UWORD Count);
  27.  
  28.  
  29. UBYTE Project8GTypes[] = {
  30.     TEXT_KIND,
  31.     TEXT_KIND,
  32.     TEXT_KIND,
  33.     BUTTON_KIND,
  34.     TEXT_KIND
  35. };
  36.  
  37. struct MyNewGadget
  38. {
  39.     WORD ng_LeftEdge, ng_TopEdge;       /* gadget position */
  40.     WORD ng_Width, ng_Height;           /* gadget size */
  41.     UBYTE *ng_GadgetText;               /* gadget label */
  42. };
  43.  
  44. struct MyNewGadget Project8NGad[] = {
  45.     126, 6, 157, 14, (UBYTE *)"Connect to:",
  46.     126, 25, 157, 15, (UBYTE *)"IP Address:",
  47.     126, 45, 157, 14, (UBYTE *)"Real Host:",
  48.     126, 82, 157, 15, (UBYTE *)"Abort",
  49.     126, 64, 157, 14, (UBYTE *)"Status:",
  50. };
  51.  
  52. ULONG Project8GTags[] = {
  53.     (GTTX_Border), TRUE, (TAG_DONE),
  54.     (GTTX_Border), TRUE, (TAG_DONE),
  55.     (GTTX_Border), TRUE, (TAG_DONE),
  56.     (TAG_DONE),
  57.     (GTTX_Border), TRUE, (TAG_DONE)
  58. };
  59.  
  60. extern UWORD abort_flag;
  61. extern struct Task *parent;
  62. extern UWORD ComputeX( UWORD value );
  63. extern UWORD ComputeY( UWORD value );
  64. extern void ComputeFont( UWORD width, UWORD height );
  65.  
  66. int OpenProject8Window( void )
  67. {
  68.     struct Gadget *g;
  69.     UWORD ww, wh;
  70.     UWORD width, height;
  71.  
  72.     ComputeFont( Project8Width, Project8Height );
  73.  
  74.     ww = ComputeX( Project8Width );
  75.     wh = ComputeY( Project8Height );
  76.  
  77.     if ( ! ( g = CreateContext( &Project8GList )))
  78.         return( 1L );
  79.  
  80.     MakeGadgets(Project8NGad, Project8Gadgets, Project8GTags, g, Project8GTypes, Project8_CNT);
  81.  
  82.     width = ww + OffX + scr->WBorRight;
  83.     height = wh + OffY + scr->WBorBottom;
  84.  
  85.     if ( ! ( Project8Wnd = OpenWindowTags( NULL,
  86.                 WA_Left,    (scr->Width - width) / 2,
  87.                 WA_Top,        (scr->Height - height) / 2,
  88.                 WA_Width,    width,
  89.                 WA_Height,    height,
  90.                 WA_IDCMP,    TEXTIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  91.                 WA_Flags,    WFLG_ACTIVATE|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH,
  92.                 WA_Gadgets,    Project8GList,
  93.                 WA_Title,    Project8Wdt,
  94.                 WA_PubScreen,    scr,
  95.                 TAG_DONE )))
  96.     return( 4L );
  97.  
  98.     GT_RefreshWindow( Project8Wnd, NULL );
  99.  
  100.     ComputeFont( Project8Width, Project8Height );
  101.  
  102.     DrawBevelBox( Project8Wnd->RPort, OffX + ComputeX( 3 ),
  103.                     OffY + ComputeY( 2 ),
  104.                     ComputeX( 326 ),
  105.                     ComputeY( 101 ),
  106.                     GT_VisualInfo, vi, TAG_DONE );
  107.  
  108.     return( 0L );
  109. }
  110.  
  111. void CloseProject8Window( void )
  112. {
  113.     if ( Project8Wnd        ) {
  114.         CloseWindow( Project8Wnd );
  115.         Project8Wnd = NULL;
  116.     }
  117.  
  118.     if ( Project8GList      ) {
  119.         FreeGadgets( Project8GList );
  120.         Project8GList = NULL;
  121.     }
  122. }
  123.  
  124. extern UWORD connect_msg_type;
  125. extern char *connect_string;
  126.  
  127. void __saveds __asm Connect_To_Server_Child(void)
  128. {
  129.     if( OpenProject8Window() == 0)
  130.     {
  131.         ULONG winsig, sig, class;
  132.         struct IntuiMessage *message;
  133.  
  134.         while(1)
  135.         {
  136.             winsig = 1L << Project8Wnd->UserPort->mp_SigBit;
  137.  
  138.             sig = Wait( winsig | SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_E );
  139.  
  140.             if(sig & winsig)
  141.             {
  142.                 while (message = (struct IntuiMessage *)GetMsg(Project8Wnd->UserPort))
  143.                 {
  144.                     class = message->Class;
  145.                     ReplyMsg(message);
  146.                     if(class == IDCMP_GADGETUP)
  147.                     {
  148.                         abort_flag = 1;
  149.                         Signal(parent, SIGBREAKF_CTRL_C);
  150.                     }
  151.                 }
  152.             }
  153.  
  154.             if(sig & SIGBREAKF_CTRL_C)
  155.             {
  156.                 CloseProject8Window();
  157.                 Signal(parent, SIGBREAKF_CTRL_E);
  158.                 return;
  159.             }
  160.  
  161.             if(sig & SIGBREAKF_CTRL_E)
  162.             {
  163.                 GT_SetGadgetAttrs(Project8Gadgets[connect_msg_type], Project8Wnd, 0, GTTX_Text, connect_string, TAG_END);
  164.                 Signal(parent, SIGBREAKF_CTRL_E);
  165.             }
  166.         }
  167.     }
  168.     CloseProject8Window();
  169. }
  170.